package com.example.project.service;

import java.util.List;

import com.baomidou.mybatisplus.extension.service.IService;
import com.example.project.entity.Attachment;

/**
 * 附件，存储系统中所有上传的文件信息Service接口
 * 
 * @author ruoyi
 * @date 2025-09-23
 */
public interface AttachmentService {
	
	/**
	 * 查询附件，存储系统中所有上传的文件信息
	 * 
	 * @param id 附件，存储系统中所有上传的文件信息主键
	 * @return 附件，存储系统中所有上传的文件信息
	 */
	public Attachment selectAttachmentById(Long id);

	/**
	 * 查询附件，存储系统中所有上传的文件信息列表
	 * 
	 * @param tAttachments 附件，存储系统中所有上传的文件信息
	 * @return 附件，存储系统中所有上传的文件信息集合
	 */
	public List<Attachment> selectAttachmentList(Attachment tAttachments);

	/**
	 * 新增附件，存储系统中所有上传的文件信息
	 * 
	 * @param tAttachments 附件，存储系统中所有上传的文件信息
	 * @return 结果
	 */
	public Attachment insertAttachment(Attachment tAttachments);

	/**
	 * 修改附件，存储系统中所有上传的文件信息
	 * 
	 * @param tAttachments 附件，存储系统中所有上传的文件信息
	 * @return 结果
	 */
	public int updateAttachment(Attachment tAttachments);

	/**
	 * 批量删除附件，存储系统中所有上传的文件信息
	 * 
	 * @param ids 需要删除的附件，存储系统中所有上传的文件信息主键集合
	 * @return 结果
	 */
	public int deleteAttachmentByIds(String ids);

	/**
	 * 删除附件，存储系统中所有上传的文件信息信息
	 * 
	 * @param id 附件，存储系统中所有上传的文件信息主键
	 * @return 结果
	 */
	public int deleteAttachmentById(Long id);

	public List<Attachment> saveAttachments(Long id, String uploadedFilesJson);

	public List<Attachment> queryAttachmentsListByIdAndType(Long containerId, String containerType);

	/**
	 * 根据ID列表查询附件列表
	 * 
	 * @param ids 附件ID列表
	 * @return 附件列表
	 */
	public List<Attachment> selectAttachmentListByIds(List<Long> ids);

	public void incrementDownloadCount(Attachment attachment);

	public boolean hasAttachment(String containerType);

	public List<Attachment> getContainerAttachment(String containerType);

	public Object findContainerById(Class<?> klass, Long objectId);
}
